package day07

import java.util.Objects

/**
 * map  集合
 *  创建： to 看上去是个关键字，但事实上，她是个省略了点号和参数的特殊函数，to函数将它左右的值转化成一堆pair
 */
fun main() {

    //TODO:1.创建map
    val map = mapOf("age" to 20, "sex" to 0, "name" to "jack")
//    println(map)

    //第二种创建方式
    val mapOfPair = mapOf(Pair("name2", "jack"), Pair("age1", 30), Pair("age1", 80))
    println(mapOfPair)

    //TODO:2.  读取map
//    val value0 = mapOfPair["name"]
//    val get = mapOfPair.get("age")
//    val get1 = mapOfPair.getValue("age")
//    val orElse = mapOfPair.getOrElse("name") { "NoThisElement" }
//    val orDefault = mapOfPair.getOrDefault("age", "没有获取到岁数")
//    println(value0)
//    println(get)
//    println(get1)
//    println(orElse)
//    println(orDefault)

    //键不能重复,多个相同的键取集合最后一个相同的键的值
    val orElse1 = mapOfPair.getOrElse("age1") { "没有此键值对" }
    println(orElse1)


    //TODO:3.map集合的遍历
    mapOfPair.forEach {
//        println("${it.key},${it.value}")
    }


    mapOfPair.forEach { (key:String,value:Comparable<*>)->
        println("$key,$value")

    }

    //TODO:可变map
    val mutableMapOf = mutableMapOf("age" to 20, "sex" to 0, "name" to "jack")
    mutableMapOf += "jimmy" to 50
    mutableMapOf.put("lining",32)
    mutableMapOf["lining"] = 32
    println(mutableMapOf)

    //getorput 键值不存在，就添加并返回结果，否则就返回已有键对应的值
//    mutableMapOf.getOrPut("ROSE",{6})
    val orPut1 = mutableMapOf.getOrPut("ROSE") { 88 }
    val orPut = mutableMapOf.getOrPut("age") { 88 }

    println(mutableMapOf)
    println(orPut1)
    println(orPut)



}